package cz.pecinovsky.english.pojj.adv_demo.zaklad_pavlickove;


/**
 *  Class HerniPlan - třída představující mapu adventury.
 *
 *  Tato třída inicializuje prvky ze kterých se hra skládá:
 *  vytváří všechny místnosti (třída Mistnost),
 *  propojuje je vzájemně pomocí východů
 *  a pamatuje si aktuální místnost, ve které se hráč právě nachází.
 *
 *@author     Michael Kolling, Lubos Pavlicek, Jarmila Pavlickova
 *@created    říjen 2008 (poslední změny)
 */
public class HerniPlan {

    private Mistnost aktualniMistnost;


     /**
     *  Konstruktor který vytváří jednotlivé místnosti a propojuje je pomocí východů.
     *  Jako výchozí aktuální místnost nastaví halu.
     */
    public HerniPlan() {
        zalozMistnosti();
    }


    /**
     *  Vytváří jednotlivé místnosti a propojuje je pomocí východů.
     *  Jako výchozí aktuální místnost nastaví halu.
     */
    private void zalozMistnosti() {
        Mistnost hala;
        Mistnost ucebna;
        Mistnost bufet;
        Mistnost chodba;
        Mistnost kancelar;

        // vytvářejí se jednotlivé místnosti
        hala = new Mistnost("hala","vstupni hala budovy VSE na Jiznim meste");
        ucebna = new Mistnost("ucebna", "prednaskova ucebna 103JM");
        bufet = new Mistnost("bufet","bufet, kam si muzete zajit na svacinku");
        chodba = new Mistnost("chodba","spojovaci chodba");
        kancelar = new Mistnost("kancelar","kancelar vaseho vyucujiciho Javy");

        // přiřazují se východy z místností (sousedící místnosti)
        hala.setVychod(ucebna);
        hala.setVychod(chodba);
        hala.setVychod(bufet);
        ucebna.setVychod(hala);
        bufet.setVychod(hala);
        chodba.setVychod(hala);
        chodba.setVychod(kancelar);
        kancelar.setVychod(chodba);

        aktualniMistnost = hala;  // hra začíná v místnosti hala

    }

    /**
     *  Metoda vrací odkaz na aktuální místnost.
     *
     *@return     aktuální místnost
     */

    public Mistnost getAktualniMistnost() {
        return aktualniMistnost;
    }

    /**
     *  Metoda nastaví aktuální místnost
     *
     *@param  místnost nová aktuální místnost
     */
    public void setAktualniMistnost(Mistnost mistnost) {
       aktualniMistnost = mistnost;
    }

}
